From 224f3cdd24e81de6f490fdcd93b114bbb7d4ab8a Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Fri, 25 May 2018 15:49:18 +0100 Subject: [PATCH] lib/fetcher-soup: Map more SoupStatus codes to known GIOErrors This allows the retry code in ostree-repo-pull.c to recover from (for example) timeouts at the libsoup layer in the stack, as well as from the GSocket layer in the stack. Signed-off-by: Philip Withnall Closes: #1594 Approved by: jlebon --- src/libostree/ostree-fetcher-soup.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/libostree/ostree-fetcher-soup.c b/src/libostree/ostree-fetcher-soup.c index 08a0a700..43794275 100644 --- a/src/libostree/ostree-fetcher-soup.c +++ b/src/libostree/ostree-fetcher-soup.c @@ -1072,11 +1072,28 @@ on_request_sent (GObject *object, GIOErrorEnum code; switch (msg->status_code) { - case 404: - case 403: - case 410: + case SOUP_STATUS_NOT_FOUND: + case SOUP_STATUS_FORBIDDEN: + case SOUP_STATUS_GONE: code = G_IO_ERROR_NOT_FOUND; break; + case SOUP_STATUS_CANCELLED: + code = G_IO_ERROR_CANCELLED; + break; + case SOUP_STATUS_REQUEST_TIMEOUT: + code = G_IO_ERROR_TIMED_OUT; + break; + case SOUP_STATUS_CANT_RESOLVE: + case SOUP_STATUS_CANT_CONNECT: + code = G_IO_ERROR_HOST_NOT_FOUND; + break; + case SOUP_STATUS_IO_ERROR: +#if !GLIB_CHECK_VERSION(2, 44, 0) + code = G_IO_ERROR_BROKEN_PIPE; +#else + code = G_IO_ERROR_CONNECTION_CLOSED; +#endif + break; default: code = G_IO_ERROR_FAILED; } -- 2.30.2